
const XLSX = require('../../utils/xlsx.mini.min');

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    listText: {
      type: String,
      value: ''
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    excelData: [],
    fileName:'',
    theFileList:[]
  },

  /**
   * 组件的方法列表
   */
  methods: {
    toUpExcel() {
      // 触发自定义事件，通知父组件
      this.triggerEvent('submit'); // 'submit' 是事件名，可以自定义
    },
    uploadExcel() {
      console.log("点击上传了");
      wx.chooseMessageFile({
        count: 1,
        type: 'file',
        success: (res) => {
          // 获取文件路径
          const filePath = res.tempFiles[0].path;

        
          // 读取文件内容
          wx.getFileSystemManager().readFile({
            filePath: filePath,
            encoding: 'base64',
            success: (fileRes) => {
              // 使用 xlsx 读取工作簿
              const workbook = XLSX.read(fileRes.data, { type: 'base64' });
              const sheetNameList = workbook.SheetNames;
  
              // 获取第一个工作表的数据
              const data = XLSX.utils.sheet_to_json(workbook.Sheets[sheetNameList[0]]);
              const fileName = res.tempFiles[0].name
              // this.setData({
              //   fileName:fileName,
              //   theFileList:[...this.data.theFileList,fileName]
              // })
              
              const updatedData = data.map(item => {
                return {
                  ...(item['学号'] ? { studentNo: String(item['学号']) } : {}),
                  ...(item['工号'] ? { teacherNo: String(item['工号']) } : {}),
                  ...(item['姓名'] ? { studentName: item['姓名'] } : {}),
                  ...(item['教师姓名'] ? { name: item['教师姓名'] } : {}),
                  ...(item['电话'] ? { phone: String(item['电话']) } : {}),
                  ...(item['年级'] ? { grade: item['年级'] } : {}),
                  ...(item['专业'] ? { major: item['专业'] } : {}),
                  ...(item['教授课程'] ? { courses: item['教授课程'].split(',') } : {}),
                  // ...(item['教授课程'] ? { courses: item['教授课程'].split(',') } : { courses: [] }), 
                  
                };
              });

              //测试数据校验
            // 校验列表中的对象
            const isValid = updatedData.every(item => {
              const keys = Object.keys(item);

              // 判断是否包含 `teacherNo`
              const hasTeacherNo = keys.includes("teacherNo");
              const expectedLength = hasTeacherNo ? 5 : 4;

              // 检查属性数量是否符合要求
              if (keys.length !== expectedLength) {
                  wx.showToast({
                      title: "文件录入失败，格式错误！",
                      icon: "none",
                      duration: 2000
                  });
                  return false; // 属性数量不符合要求
              }

              // 检查属性值是否为空
              const hasEmptyValue = keys.some(key => !item[key]);
              if (hasEmptyValue) {
                  wx.showToast({
                      title: "文件录入失败，存在空值！",
                      icon: "none",
                      duration: 2000
                  });
                  return false; // 存在空值
              }

              return true; // 当前对象通过校验
            });

            // 如果数据有效，更新到 excelData
            if (isValid) {
              this.setData({
                fileName:fileName,
                theFileList:[...this.data.theFileList,fileName]
              })
              this.setData({
                  excelData: updatedData,
              });
              console.log("excelData:",this.data.excelData);
              this.triggerEvent('dataChange', this.data.excelData);
            }

            

              // 更新状态，存储解析后的数据
              // this.setData({
              //   excelData: updatedData,
              // });

              // console.log("excelData:",this.data.excelData);
              // this.triggerEvent('dataChange', this.data.excelData);
            },
            fail: (error) => {
              console.error('读取文件失败', error);
            },
          });
        },
        fail: (error) => {
          console.error('选择文件失败', error);
        },
      });
    },
    submit(){
      console.log("submithhh");
      this.setData({
        theFileList:[]
      })
    },
  }
})